package com.jxau.utils;

import Jama.Matrix;

import java.util.ArrayList;
import java.util.List;

/**
 * @author lts
 * @create 2022-04-30 21:24
 */
public class StringUtils {

    /**
     * 字符串转成double类型的二维数组，便于之后方便创建矩阵对象
     * @param src
     * @return
     */
    public static double[][] StringToArray(String src){
        String dda[] = src.split("\n"); //double dimensional array 二维数组

        double fDst[][] = new double[dda.length][];//建立二维数组final destination的简写

        for(int i = 0; i < dda.length; i++){
            String[] subDda = dda[i].split(" ");//sub Double Dimensional Array 二维数组的子数组
            fDst[i] = new double[subDda.length];//Java的二维数组可以理解为数组的集合，这里建立第0维数组的第0个子数组
            //这里出错会throw exception，翻译后近似数组越界
            for(int j = 0; j < subDda.length; j++){
                fDst[i][j] = Double.parseDouble(subDda[j]);//api文档中说明parsedouble等价于valueof
            }
        }

        return fDst;
    }

    //    给字符串转换成double类型的二维数组，并最后封装成矩阵对象
    public static Matrix createMatrix(String str1){
        double[][] array1 = StringUtils.StringToArray(str1);
        Matrix matrix1 = new Matrix(array1);
        return matrix1;
    }

    //    给字符串转换成double类型的二维数组，并最后封装成矩阵对象
    public static List<Matrix> createMatrix(String str1, String str2){
        double[][] array1 = StringUtils.StringToArray(str1);
        double[][] array2 = StringUtils.StringToArray(str2);
        Matrix matrix1 = new Matrix(array1);
        Matrix matrix2 = new Matrix(array2);
        List<Matrix> matrixs = new ArrayList<>();
        matrixs.add(matrix1);
        matrixs.add(matrix2);
        return matrixs;
    }
}

